package com.qdd.freight.util;//package com.qdd.freight.util;
//
//import com.qdd.freight.exception.FreightCountFailureException;
//import com.qdd.freight.pojo.Ship;
//
//import java.util.Date;
//import java.util.List;
//
///**
// * @ClassName JudgeUtils
// * @Description TODO
// * @Author yanpeihao
// * @Date 2019/12/18 20:34
// * @Version 1.0
// **/
//
//public class JudgeUtils {
//
////    /**
////     * 物流禁运判断
////     *
////     * @param consignee
////     * @param ship
////     * @return true 为禁运中
////     */
////    public static boolean logisforbiddenJudge(String consignee,  List<String> forbiddenRegionList){
////        //判断传入的对象类型，并作针对性判断
////        if ( ship instanceof Logistics) {
////            //转换为特定类对象类型
////            Logistics logistics = (Logistics) ship;
////            //判断是否以禁运清单中的字段开头，如果是，则说明再清单中，或者在该地区的辖内
////            //true 为禁运中
////            return (Arrays.asList(logistics.getforbiddenAddr().split(","))).stream().anyMatch(item -> consignee.startsWith(item))
////                    //判断是否符合禁运时间段
////                    && isEffectiveDate(new Date(), logistics.getForbidonBeginTime(), logistics.getForbidonEndTime());
////        } else {
////            Delivery delivery = (Delivery) ship;
////            //判断是否符合地区配送条件
////            Boolean flag =
////                    //判断是否以禁运清单中的字段开头，如果是，则说明再清单中，或者在该地区的辖内
////                    (Arrays.asList(delivery.getforbiddenAddr().split(","))).stream().anyMatch(item -> consignee.startsWith(item))
////                            //判断是否符合禁运时间段
////                            && isEffectiveDate(new Date(), delivery.getForbidonBeginTime(), delivery.getForbidonEndTime());
////            return flag;
////        }
////    }
//
//    /**
//     * 禁运判断
//     *
//     * @param consignee
//     * @param ship
//     * @return true 为禁运中
//     */
//    public static boolean forbiddenJudge(Ship ship ,String consignee, List<String> forbiddenRegionList) throws Exception {
//        if (ship == null) {
//            throw new FreightCountFailureException("未获取到指定的物流承运商！");
//        }
//        //2.该物流的有效期 + 启用状态判断，提示该地区不支持此承运方式
//        //判断启用状态
//        if (ship.getEnabled() == 0) {
//            throw new FreightCountFailureException("该物流承运商未启用！");
//        }
//        //3.判断是否设置了有效期的值：如果为0，则说明长期有效；不为0，判断当时时间是否在有效期内
//        //有有效期设置，且已经超出有效内，提示该地区不支持此承运方式
//        if (ship.getTimeValidity() != 0 && !(DateUtils.judgeValidity(new Date(), ship.getAddTime(), ship.getTimeValidity()))) {
//            throw new FreightCountFailureException(" 该快递已经超出有效期,不支持此承运方式 ！");
//        }
//
//        // 4.判断是否该物流/快递对象存在禁运标志，返回false表示该物流对象是可用的
//        if (ship.getForbiddenStatus() == 0){
//            return false;
//        }
//        //5.返回false表示该物流对象是可用的
//        if (forbiddenRegionList == null || forbiddenRegionList.size() == 0) {
//            return false;
//        }
//        //6.如果有禁运设置，调用方法判断是否在禁运字符串内,true为禁运,false表明当前物流对象可用
//        return forbiddenRegionList.stream().anyMatch(item -> consignee.startsWith(item));
//    }
//
////    /*
////     * 判断当前时间是否在[startTime, endTime]区间，注意时间格式要一致
////     * @param nowTime 当前时间
////     * @param startTime 开始时间
////     * @param endTime 结束时间
////     * @return true 为禁运中
////     * @author jqlin
////     */
////    private static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
////        System.out.println("当前时间：" + new SimpleDateFormat("yyyy-MM_dd HH:mm:ss").format(nowTime));
////        System.out.println("禁运开始时间：" + new SimpleDateFormat("yyyy-MM_dd HH:mm:ss").format(startTime));
////        System.out.println("禁运结束时间：" + new SimpleDateFormat("yyyy-MM_dd HH:mm:ss").format(endTime));
////        //如果当前时间和起止时间相同，则在禁运区间内
////        //true 为禁运中
////        return nowTime.getTime() == startTime.getTime()
////                || nowTime.getTime() == endTime.getTime()
////                || (nowTime.getTime() >= startTime.getTime() && nowTime.getTime() <= endTime.getTime());//在禁运时间内
////    }
//}
